Перейти к основному содержимому

5.13. Первая программа на Rust

Разработчику Архитектору

Первая программа на Rust

Установка инструментов

Для работы с Rust требуется установка набора инструментов, известного как Rustup. Это официальный установщик и менеджер версий языка. Он автоматически загружает и настраивает всё необходимое: компилятор rustc, менеджер пакетов и зависимостей cargo, а также документацию.

Шаг 1. Скачивание и запуск установщика

Установка выполняется через командную строку. На большинстве Unix-подобных систем (Linux, macOS) достаточно выполнить одну команду в терминале:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Эта команда загружает скрипт установки с официального сайта и передаёт его интерпретатору оболочки. Скрипт спрашивает, какую конфигурацию выбрать. Рекомендуется оставить вариант по умолчанию — default host triple — и нажать Enter. Это установит стабильную версию Rust для текущей операционной системы и архитектуры.

На Windows процесс аналогичен. Следует скачать исполняемый файл rustup-init.exe с официального сайта и запустить его. Установщик предложит те же варианты, что и в Unix-версии.

Шаг 2. Обновление переменной окружения PATH

После завершения установки скрипт автоматически добавляет каталог ~/.cargo/bin в переменную окружения PATH. Это необходимо для того, чтобы команды rustc и cargo были доступны из любого места в терминале.

В некоторых случаях, особенно после установки в графической среде, может потребоваться перезапустить терминал или выполнить команду:

source "$HOME/.cargo/env"

Это загружает обновлённые настройки окружения в текущую сессию.

Шаг 3. Проверка установки

Чтобы убедиться, что всё работает корректно, следует проверить версии установленных компонентов:

rustc --version
cargo --version

Команды должны вывести информацию о версиях компилятора и менеджера пакетов. Например:

rustc 1.78.0 (9b00956e5 2024-04-29)
cargo 1.78.0 (54d8815d0 2024-04-23)

Наличие номеров версий подтверждает успешную установку.


Выбор интегрированной среды разработки

Rust не требует конкретной IDE, но использование специализированных инструментов значительно ускоряет разработку. Основной компонент, обеспечивающий поддержку языка в редакторах, — это rust-analyzer. Это сервер языка, реализующий протокол Language Server Protocol (LSP). Он предоставляет такие функции, как автодополнение, навигация по коду, подсветка ошибок в реальном времени, рефакторинг и быстрый просмотр типов.

Поддерживаемые редакторы

  • Visual Studio Code — наиболее популярный выбор. Для работы с Rust требуется установка расширения rust-analyzer из Marketplace. После установки расширение автоматически обнаруживает проекты Rust и активирует все возможности языкового сервера.

  • JetBrains IntelliJ IDEA / CLion / RustRover — мощные коммерческие IDE с отличной поддержкой Rust через плагин. Особенно рекомендуется RustRover, специализированная среда от JetBrains, созданная специально для Rust.

  • Vim / Neovim — для пользователей этих редакторов доступны плагины, такие как coc.nvim или nvim-lspconfig, которые интегрируют rust-analyzer.

  • Emacs — поддержка осуществляется через пакет lsp-mode и rust-mode.

Выбор редактора зависит от личных предпочтений и опыта. Для новичков рекомендуется начать с Visual Studio Code из-за простоты настройки и богатой экосистемы расширений.


Создание первого проекта

Rust использует Cargo как центральный инструмент управления проектами. Cargo отвечает за создание структуры проекта, компиляцию кода, управление зависимостями, запуск тестов и сборку дистрибутивов.

Шаг 1. Инициализация проекта

Откройте терминал и перейдите в каталог, где вы хотите создать проект. Выполните команду:

cargo new hello_rust

Эта команда создаёт новый каталог hello_rust со следующей структурой:

hello_rust/
├── Cargo.toml
└── src/
└── main.rs

Файл Cargo.toml — это манифест проекта. Он содержит метаданные: название, версию, зависимости, настройки сборки. По умолчанию он выглядит так:

[package]
name = "hello_rust"
version = "0.1.0"
edition = "2021"

[dependencies]

Раздел [package] описывает сам проект. Поле edition указывает, какую версию языка использовать. Rust сохраняет обратную совместимость через выпуски (editions), и 2021 — это актуальная стабильная версия на момент написания.

Каталог src содержит исходный код. Файл main.rs — точка входа в программу. Его содержимое по умолчанию:

fn main() {
println!("Hello, world!");
}

Это и есть первая программа на Rust.

Шаг 2. Анализ структуры программы

Программа состоит из одной функции — main. Это специальное имя, которое компилятор ищет как стартовую точку выполнения. Тело функции заключено в фигурные скобки {}.

Вызов println! — это макрос, а не обычная функция. Макросы в Rust обозначаются восклицательным знаком. Они позволяют генерировать код на этапе компиляции, что делает их мощным инструментом метапрограммирования. Макрос println! выводит текст в стандартный поток вывода (обычно терминал) и добавляет символ новой строки в конце.

Строка "Hello, world!" — это строковый литерал. В Rust строки по умолчанию имеют тип &str (срез строки), который является эффективной ссылкой на неизменяемую последовательность UTF-8 символов.

Каждое выражение в Rust завершается точкой с запятой, если оно не возвращает значение, предназначенное для использования в другом месте. В данном случае вызов println! ничего не возвращает, поэтому требует точки с запятой.


Компиляция и запуск программы

Cargo предоставляет удобные команды для сборки и выполнения проекта.

Шаг 1. Запуск в режиме разработки

Выполните в корне проекта:

cargo run

Эта команда автоматически компилирует проект и запускает полученный исполняемый файл. Вывод будет таким:

   Compiling hello_rust v0.1.0 (/path/to/hello_rust)
Finished dev [unoptimized + debuginfo] target(s) in 0.35s
Running `target/debug/hello_rust`
Hello, world!

Cargo создаёт исполняемый файл в подкаталоге target/debug/. Режим сборки по умолчанию — dev — оптимизирован для скорости компиляции и включает отладочную информацию, что полезно при разработке.

Шаг 2. Запуск в режиме релиза

Когда программа готова к распространению, её собирают в режиме release:

cargo build --release

Этот режим включает все уровни оптимизации компилятора, что значительно увеличивает производительность, но замедляет саму сборку. Исполняемый файл помещается в target/release/.

Для запуска релизной версии:

cargo run --release

Шаг 3. Только компиляция

Если нужно только собрать программу без запуска, используется команда:

cargo build

или

cargo build --release

После этого можно запустить исполняемый файл напрямую:

./target/debug/hello_rust

(на Windows путь будет .\target\debug\hello_rust.exe)


Дальнейшие шаги и рекомендации

Первая программа — это отправная точка. Rust предоставляет богатую стандартную библиотеку и огромное количество внешних пакетов через реестр crates.io. Чтобы добавить зависимость, её описание помещают в раздел [dependencies] файла Cargo.toml. Например:

[dependencies]
rand = "0.8"

После этого Cargo автоматически скачает и скомпилирует указанную версию библиотеки при следующем запуске cargo build.

Также рекомендуется изучить встроенную документацию. Команда:

rustup doc

открывает локальную копию официальной документации в браузере. Это особенно полезно при отсутствии интернета или для быстрого поиска информации.